#include <stdio.h>
#include "nvs_flash.h"
#include "esp_event.h"
#include "esp_netif.h"
#include "esp_wifi.h"
#include "string.h"

#include "esp_log.h"
#include "esp_mac.h"


void wiif_event_handler(void* event_handler_arg,
						esp_event_base_t event_base,
						int32_t event_id,
						void* event_data)
{
	if (event_base  == IP_EVENT && event_id == IP_EVENT_AP_STAIPASSIGNED) {
		ip_event_ap_staipassigned_t* info = (ip_event_ap_staipassigned_t*)event_data;
		ESP_LOGI("log", "STA IP:%d.%d.%d.%d", IP2STR(&info->ip));
		ESP_LOGI("log", "new STA MAC : "MACSTR"", MAC2STR(info->mac));
	}
	if (event_base ==WIFI_EVENT&& event_id ==WIFI_EVENT_AP_STADISCONNECTED)
	{
		wifi_event_ap_stadisconnected_t* info = (wifi_event_ap_stadisconnected_t*)event_data;
		ESP_LOGI("log", "disconnect STA MAC: "MACSTR"", MAC2STR(info->mac));
	}
	


}

void app_main(void)
{
	// 初始化 NVS（Non-Volatile Storage）系统，用于存储键值对wifi信息就存在里面 关机再开机还存在
	nvs_flash_init();

	// 创建默认的事件循环
	esp_event_loop_create_default();

	esp_event_handler_instance_register(IP_EVENT, IP_EVENT_AP_STAIPASSIGNED, &wiif_event_handler, NULL,
										NULL);

	esp_event_handler_instance_register(WIFI_EVENT,WIFI_EVENT_AP_STADISCONNECTED, &wiif_event_handler, NULL,NULL);
	// 初始化网络接口（网卡配置）
	esp_netif_init();

	// 创建默认的 AP 网卡
	esp_netif_create_default_wifi_ap();

	// 初始化 WiFi 配置
	wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
	esp_wifi_init(&cfg);

	// 设置 WiFi 模式为 AP 模式
	esp_wifi_set_mode(WIFI_MODE_AP);

	// 配置 AP 的参数
	wifi_config_t config = {
		.ap = {
			.ssid = "esp32-c3",  // 设置 SSID
			.ssid_len = strlen("esp32-c3"),  // SSID 长度
			.channel = 1,  // 设置信道
			.password = "123456789",  // 设置密码
			.max_connection = 4,  // 最大连接数
			.authmode = WIFI_AUTH_WPA_WPA2_PSK  // 认证模式
		}
	};

	// 应用配置到 AP 接口
	esp_wifi_set_config(WIFI_IF_AP, &config);

	// 启动 WiFi
	esp_wifi_start();
}